package com.lyf.boot.modules.system.service;

import com.lyf.boot.core.model.DictCache;
import com.lyf.boot.core.model.OptionVo;
import com.lyf.boot.core.model.PageInfo;
import com.lyf.boot.modules.system.entity.dto.SysDictDto;
import com.lyf.boot.modules.system.entity.dto.SysDictPageDto;
import com.lyf.boot.modules.system.entity.dto.SysDictTypeDto;
import com.lyf.boot.modules.system.entity.dto.SysDictTypePageDto;
import com.lyf.boot.modules.system.entity.vo.SysDictTypeVo;
import com.lyf.boot.modules.system.entity.vo.SysDictVo;

import java.util.List;
import java.util.Map;

/**
 * @author Luyufan
 * @date 2023/7/7 16:53
 */
public interface ISysDictService {

    PageInfo<SysDictTypeVo> getSysDictTypePage(SysDictTypePageDto dto);
    
    List<OptionVo> getSysDictTypeList();

    List<SysDictVo> getSysDictListByType(String dictType);

    Map<String,String> getSysDictMapByType(String dictType);

    DictCache getSysDict(String dictType, String dictKey);

    String getSysDictValue(String dictType, String dictKey);

    /**
     * 同步缓存
     * @author Luyufan
     * @date 2023/7/7 17:30
     * @param
     * @return void
     */
    void asyncSysDict();

    SysDictTypeVo getSysDictTypeInfo(Long dictId);

    void saveSysDictType(SysDictTypeDto dto);

    void updateSysDictType(SysDictTypeDto dto);

    void deleteSysDictType(List<Long> ids);

    PageInfo<SysDictVo> getSysDictPage(SysDictPageDto dto);

    SysDictVo getSysDictInfo(Long dictId);

    void saveSysDict(SysDictDto dto);

    void updateSysDict(SysDictDto dto);

    void deleteSysDict(List<Long> ids);
}
